package sv.com.action.embarcacion;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import net.sf.json.JSONObject;

import sv.com.action.comun.ComunAction;
//import sv.com.modelo.buque.Buque;
//import sv.com.modelo.buque.MotorBuque;
//import sv.com.modelo.buque.ServicioBuque;
import sv.com.modelo.buque.TipoArtefacto;
//import sv.com.modelo.buque.TipoBuqueEmb;
import sv.com.modelo.catalogos.Agrupacion;
import sv.com.modelo.catalogos.MaterialCasco;
import sv.com.modelo.embarcacion.ArtefactoNaval;
import sv.com.modelo.embarcacion.Audit_Artefacto_Naval;
import sv.com.modelo.embarcacion.Audit_PersonaxArtefacto;
import sv.com.modelo.embarcacion.PersonaArtefactoPk;
import sv.com.modelo.embarcacion.PersonaEmbarcacionPk;
import sv.com.modelo.embarcacion.PersonaXRegistroBuque;
import sv.com.modelo.embarcacion.PersonaxArtefacto;
import sv.com.modelo.embarcacion.Puerto;
import sv.com.modelo.persona.Persona;
import sv.com.objetos.auxiliares.Cadena;
import sv.com.objetos.auxiliares.Constantes;
import sv.com.objetos.auxiliares.Consulta;
import sv.com.objetos.auxiliares.Fecha;
import sv.com.objetos.auxiliares.Listas;
import sv.com.objetos.auxiliares.UsuarioLogueado;
import sv.com.objetos.jqgrid.JQGridJSONModel;
import sv.com.objetos.jqgrid.JQGridRow;
import sv.com.servicio.generico.DaoGenerico;

public class ArtefactoNavalAction extends ComunAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public void guardarPath(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		String idArtefactoNaval  = getServletRequest().getParameter("idArtefactoNaval");
		String foto  = getServletRequest().getParameter("nomArchivo");
		
		propiedades.add("idArtefactoNaval");
		valores.add(idArtefactoNaval);
		tiposConsulta.add(Consulta.IGUAL);
		List<ArtefactoNaval> lista=null;
		
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "idArtefactoNaval asc");
		
		try {
			lista=servicioGenerico.cargarTodosV2(ArtefactoNaval.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			ArtefactoNaval artefacto= lista.get(0);
			
			artefacto.setFotografia(foto);
			
			servicioGenerico.modificar(artefacto);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			if(e.getCause()!=null)
				enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
			else
				enviarMensajeStatic("error~"+e.toString(), getServletResponse());
		}
		
		
	
	}

	public void mapaDeMetodos(){
		String metodo=getOper();
		if(metodo==null) metodo = CONS;
		if(metodo.equals("cargarArtefacto")) cargarGridArtefacto();
		else if(metodo.equals("datosArtefacto")) datosArtefacto();
		else if(metodo.equals(AGR)) agregar();
		else if(metodo.equals(MOD)) modificar();
		else if(metodo.equals("eliminarDuenos")) eliminoDuennos();
		else if(metodo.equals("pathArtefacto")) guardarPath();
	}

	public void eliminoDuennos(){
		List<PersonaxArtefacto> listaPerArt=null;
		String idPer = getServletRequest().getParameter("idPersona");
		String idArtefactoNaval = getServletRequest().getParameter("idArtefactoNaval");
		HashMap<String, Object> parametros2 = new HashMap<String, Object>();
		ArrayList<String> propiedades2=new ArrayList<String>();
		ArrayList<Object> valores2 = new ArrayList<Object>();
		ArrayList<String> tiposConsulta2 = new ArrayList<String>();
		
		propiedades2.add("PersonaArtefactoPk.idPersona");
		valores2.add(new Long(idPer));
		tiposConsulta2.add(Consulta.IGUAL);
		
		
		propiedades2.add("PersonaArtefactoPk.idArtefactoNaval");
		valores2.add(new Long(idArtefactoNaval));
		tiposConsulta2.add(Consulta.IGUAL);
		
		parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades2));
		parametros2.put("valores", Listas.pasarListaArregloObjeto(valores2));
		parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta2));
		parametros2.put("ordenarPor", "PersonaArtefactoPk.idPersona asc");
		
		try {
			listaPerArt=servicioGenerico.cargarTodosV2(PersonaxArtefacto.class, parametros2, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
			PersonaxArtefacto pxa = listaPerArt.get(0);
			servicioGenerico.eliminar(pxa);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			if(e.getCause()!=null)
				enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
			else
				enviarMensajeStatic("error~"+e.toString(), getServletResponse());
		}
	
	}
	
	public void datosArtefacto(){
		try{
			
			List<ArtefactoNaval> lista=null;
			List<PersonaxArtefacto> listaPerArt=null;
			List<Persona> listaPer=null;
			
			String idArtefactoNaval = getServletRequest().getParameter("idArtefactoNaval");
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();
			
			propiedades.add("idArtefactoNaval");
			valores.add(idArtefactoNaval);
			tiposConsulta.add(Consulta.IGUAL);
			
			
			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idArtefactoNaval asc");
			
			lista=servicioGenerico.cargarTodosV2(ArtefactoNaval.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
			ArtefactoNaval an= lista.get(0);
			
			///PARTE PARA RECONSTRUIR PERSONAS POR BUQUE
			HashMap<String, Object> parametros2 = new HashMap<String, Object>();
			ArrayList<String> propiedades2=new ArrayList<String>();
			ArrayList<Object> valores2 = new ArrayList<Object>();
			ArrayList<String> tiposConsulta2 = new ArrayList<String>();
			
			
			
			propiedades2.add("PersonaArtefactoPk.idArtefactoNaval");
			valores2.add(new Long(idArtefactoNaval));
			tiposConsulta2.add(Consulta.IGUAL);
			
			parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades2));
			parametros2.put("valores", Listas.pasarListaArregloObjeto(valores2));
			parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta2));
			parametros2.put("ordenarPor", "PersonaArtefactoPk.idPersona asc");
			
			listaPerArt=servicioGenerico.cargarTodosV2(PersonaxArtefacto.class, parametros2, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
			String html="";
			int conta =1;
			double total = 0;
			for(PersonaxArtefacto pxa:listaPerArt){
				HashMap<String, Object> parametros3 = new HashMap<String, Object>();
				ArrayList<String> propiedades3=new ArrayList<String>();
				ArrayList<Object> valores3 = new ArrayList<Object>();
				ArrayList<String> tiposConsulta3 = new ArrayList<String>();
				
				
				propiedades3.add("idPersona");
				valores3.add(new Long(pxa.getPersonaArtefactoPk().getIdPersona()));
				tiposConsulta3.add(Consulta.IGUAL);
				
				parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades3));
				parametros2.put("valores", Listas.pasarListaArregloObjeto(valores3));
				parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta3));
				parametros2.put("ordenarPor", "idPersona asc");
				
				listaPer =servicioGenerico.cargarTodosV2(Persona.class, parametros2, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
				
				Persona pp= listaPer.get(0);
				
				html = html + "<tr id='tr"+conta+"'> ";
				html  = html + "<td><input type='hidden' name='hdVal"+conta+"' id='hdVal"+conta+"' value='"+pxa.getPersonaArtefactoPk().getIdPersona()+"'> </td>";		 
				html  = html + "<td><input type='text' name='nombreVal"+conta+"' id='nombreVal"+conta+"' value='"+pp.getNombrePersona()+"'> </td>";
				html  = html + "<td><input type='text' name='porcentajeVal"+conta+"' id='porcentajeVal"+conta+"' value='"+pxa.getPorcentaje()+"'> </td>";
//				html  = html + "<td><input class='agrego' type='button' onclick='javascript:validarPorCiento("+conta+")'></td>";
				html  = html + "<td><input class='delete' type='button' onclick='javascript:eliminarDuenno("+conta+","+pxa.getPersonaArtefactoPk().getIdPersona()+","+pxa.getPersonaArtefactoPk().getIdArtefactoNaval()+")'></td>";
				html  = html + "</tr>";
				total = total +pxa.getPorcentaje();
				conta++;
			}
			
			HashMap<String, Object> retorno = new HashMap<String, Object>();
			
			
			retorno.put("total", total);
			retorno.put("duennos", html);
			retorno.put("artefacto",an);
			retorno.put("contador",conta);
			JSONObject o = JSONObject.fromObject(retorno);
			enviarJsonNavegador(o);
		}catch (Exception e) {
			e.printStackTrace();
			if(e.getCause()!=null)
				enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
			else
				enviarMensajeStatic("error~"+e.toString(), getServletResponse());
		}
	}

	
	public void cargarGridArtefacto(){
		try{
			JQGridJSONModel json= new JQGridJSONModel();
			int pagina = getPage();
			int bloque = getRows();
			
			String nombreArtefactoNaval = getServletRequest().getParameter("nombreArtefactoNaval");
			String numeroOficial = getServletRequest().getParameter("numeroOficial");
			List<JQGridRow> rows = new ArrayList<JQGridRow>();
			
			Integer totalColumnas = new Integer(0);
			List<ArtefactoNaval> lista=null;
			String idArtefactoNaval = getServletRequest().getParameter("idArtefactoNaval");
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();
			
			if(get_search()){
//				HashMap<String, Object> filtros=obtenerFiltros();
//				propiedades.addAll((ArrayList)filtros.get("propiedades"));
//				valores.addAll((ArrayList)filtros.get("valores"));
//				tiposConsulta.addAll((ArrayList)filtros.get("tiposConsulta"));
				if(Cadena.noVacio(nombreArtefactoNaval)){ propiedades.add("nombreArtefactoNaval"); valores.add(nombreArtefactoNaval); tiposConsulta.add(Consulta.LIKE); }
				if(Cadena.noVacio(numeroOficial)){ propiedades.add("numeroOficial"); valores.add(numeroOficial); tiposConsulta.add(Consulta.IGUAL); }
				
			}

			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idArtefactoNaval asc");
			
			totalColumnas = servicioGenerico.tamanoTotalListaCargarTodosV2(ArtefactoNaval.class, parametros);
			lista=servicioGenerico.cargarTodosV2(ArtefactoNaval.class, parametros, pagina, bloque);
			
			json.setRecords(totalColumnas);
			JQGridRow row = null; 
			List<String> cells = null; 
			for(ArtefactoNaval objeto:lista){
				row = new JQGridRow(); 
				cells = new ArrayList<String>();
				row.setId(objeto.getIdArtefactoNaval());
				cells.add(objeto.getIdArtefactoNaval()+"");
				cells.add(objeto.getNombreArtefacto());
				cells.add(objeto.getNumeroOficial());
				
				row.setCell(cells); 
				rows.add(row);
			}
			json.setPage(String.valueOf(pagina)); 
			json.setTotal(String.valueOf(Constantes.calcularNumeroPaginas(totalColumnas,getRows())));
			json.setRows(rows);
			
			JSONObject o = JSONObject.fromObject(json);
			enviarJsonNavegador(o);
		}catch (Exception e) {
			e.printStackTrace();
			if(e.getCause()!=null)
				enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
			else
				enviarMensajeStatic("error~"+e.toString(), getServletResponse());
		}
		return;
	}
	
	public void modificar(){
		ArtefactoNaval artefacto  = new ArtefactoNaval();
		Audit_Artefacto_Naval audit_artefacto = new Audit_Artefacto_Naval();
		List<ArtefactoNaval> listaArt = new ArrayList<ArtefactoNaval>();
		
		 String idArtefactoNaval =getServletRequest().getParameter("idArtefactoNav"); 
		 String nombreArtefacto=getServletRequest().getParameter("nombreArtefactoNaval");
		 String idAgrupacion=getServletRequest().getParameter("idAgrupacion");
		 String numeroOficial=getServletRequest().getParameter("numeroOficialArtefacto");
		 String distintivoLlamada=getServletRequest().getParameter("distintivoLlamada");
		 String idTipoArtefacto=getServletRequest().getParameter("idTipoArtefacto");
		 String desplazamiento=getServletRequest().getParameter("desplazamiento");
		 String idPuerto=getServletRequest().getParameter("idPuerto");
		 String ubicacionFisica=getServletRequest().getParameter("ubicacionFisica");
		 String idMaterial=getServletRequest().getParameter("idMaterial");
		 String color=getServletRequest().getParameter("color");
		 String construidoEn=getServletRequest().getParameter("construidoEn");
		 String constructor=getServletRequest().getParameter("constructor");
		 String observaciones=getServletRequest().getParameter("observaciones");
		 String resolucionDe=getServletRequest().getParameter("resolucionDe");
		 String fechaResolucionDe=getServletRequest().getParameter("fechaResolucionDe");
		 String fechaNotificacion=getServletRequest().getParameter("fechaNotificacion");
		 String fechaEmision=getServletRequest().getParameter("fechaEmision");
		 String fechaExpiracion=getServletRequest().getParameter("fechaExpiracion");
		 String contador=getServletRequest().getParameter("contador");		 
		 String finalRes = getServletRequest().getParameter("final");
		 
		TipoArtefacto ta = new TipoArtefacto();
		if(idTipoArtefacto!=null&&!idTipoArtefacto.equals("")) ta.setIdTipoArtefacto(new Long(idTipoArtefacto));
		else ta = null;
		
		Agrupacion agr=new Agrupacion();
		if(idAgrupacion!=null&&!idAgrupacion.equals("")) agr.setIdAgrupacion(new Long(idAgrupacion));
		else agr = null;
		
		MaterialCasco mc = new MaterialCasco();
		if(idMaterial!=null&&!idMaterial.equals("")) mc.setIdMaterial(new Long(idMaterial));
		else mc =null;
		
		Puerto pto = new Puerto();
		if(idPuerto!=null&&!idPuerto.equals("")) pto.setIdPuerto(new Long(idPuerto));
		else pto=null;
		
		Long cnt = new Long(0);
		if(contador!=null&&!contador.equals("")) cnt = new Long(contador);
		
		try{
		
		
//		Long numCil = new Long(0);
//		if(numeroCilindros!=null&&!numeroCilindros.equals("")) numCil = new Long(numeroCilindros);
//		Long numCil = new Long(0);
//		if(numeroCilindros!=null&&!numeroCilindros.equals("")) numCil = new Long(numeroCilindros);
		
		
			
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();
			
			propiedades.add("idArtefactoNaval");
			valores.add(new Long(idArtefactoNaval));
			tiposConsulta.add(Consulta.IGUAL);
			
		
			
			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idArtefactoNaval asc");
			
			listaArt=servicioGenerico.cargarTodosV2(ArtefactoNaval.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
			artefacto = listaArt.get(0);
		
			artefacto.setColor(color);
			artefacto.setConstructor(constructor);
			artefacto.setConstruidoEn(construidoEn);
			artefacto.setDesplazamiento(desplazamiento);
			artefacto.setDistintivoLlamada(distintivoLlamada);
			//artefacto.setFechaEmision(fechaEmision);
			//artefacto.setFechaExpiracion(fechaExpiracion);
			//artefacto.setFechaNotificacion(fechaNotificacion);
			//artefacto.setFechaResolucionDe(fechaResolucionDe);
			artefacto.setIdAgrupacion(agr);
			artefacto.setIdMaterial(mc);
			artefacto.setIdPuerto(pto);
			artefacto.setIdTipoArtefacto(ta);
			artefacto.setNombreArtefacto(nombreArtefacto);
			artefacto.setNumeroOficial(numeroOficial);
			artefacto.setObservaciones(observaciones);
			artefacto.setResolucionDe(resolucionDe);
			artefacto.setUbicacionFisica(ubicacionFisica);
			//artefacto.setEstado(estado);
			
			
			artefacto.setFechaEmision(Fecha.traducirValorFechaNull(fechaEmision));
			artefacto.setFechaExpiracion(Fecha.traducirValorFechaNull(fechaExpiracion));
			artefacto.setFechaNotificacion(Fecha.traducirValorFechaNull(fechaNotificacion));
			artefacto.setFechaResolucionDe(Fecha.traducirValorFechaNull(fechaResolucionDe));
			artefacto.setResolucionDe(resolucionDe);
			UsuarioLogueado ul = obtenerUsuarioLogueado(getServletRequest());
			artefacto.setUsuario(ul.getCodUsuario());
			servicioGenerico.modificar(artefacto);
			
			
			audit_artefacto.setIdArtefactoNaval(artefacto.getIdArtefactoNaval());
			audit_artefacto.setColor(color);
			audit_artefacto.setConstructor(constructor);
			audit_artefacto.setConstruidoEn(construidoEn);
			audit_artefacto.setDesplazamiento(desplazamiento);
			audit_artefacto.setDistintivoLlamada(distintivoLlamada);
			//artefacto.setFechaEmision(fechaEmision);
			//artefacto.setFechaExpiracion(fechaExpiracion);
			//artefacto.setFechaNotificacion(fechaNotificacion);
			//artefacto.setFechaResolucionDe(fechaResolucionDe);
			if(agr!=null)
			audit_artefacto.setIdAgrupacion(agr.getIdAgrupacion());
			if(mc!=null)
			audit_artefacto.setIdMaterial(mc.getIdMaterial());
			if(pto!=null)
			audit_artefacto.setIdPuerto(pto.getIdPuerto());
			if(ta!=null)
			audit_artefacto.setIdTipoArtefacto(ta.getIdTipoArtefacto());
			audit_artefacto.setNombreArtefacto(nombreArtefacto);
			audit_artefacto.setNumeroOficial(numeroOficial);
			audit_artefacto.setObservaciones(observaciones);
			audit_artefacto.setResolucionDe(resolucionDe);
			audit_artefacto.setUbicacionFisica(ubicacionFisica);
			//audit_artefacto.setEstado(estado);
			
			
			audit_artefacto.setFechaEmision(Fecha.traducirValorFechaNull(fechaEmision));
			audit_artefacto.setFechaExpiracion(Fecha.traducirValorFechaNull(fechaExpiracion));
			audit_artefacto.setFechaNotificacion(Fecha.traducirValorFechaNull(fechaNotificacion));
			audit_artefacto.setFechaResolucionDe(Fecha.traducirValorFechaNull(fechaResolucionDe));
			audit_artefacto.setResolucionDe(resolucionDe);
			
			//audit_artefacto.setId_Audit_artefacto_naval(artefacto.getIdArtefactoNaval());
			audit_artefacto.setUsuarioAudit(ul.getCodUsuario());
			audit_artefacto.setFechaAudit(new Date());
			audit_artefacto.setAccionAudit("UPDATE de Artefacto");
			audit_artefacto.setUsuarioAudit(ul.getCodUsuario());
			servicioGenerico.agregar(audit_artefacto);
	
		
		for(int i=0;i<=cnt;i++){
			String valorPersona = getServletRequest().getParameter("hdVal"+i);
			String valorPor = getServletRequest().getParameter("porcentajeVal"+i);
			if(valorPersona!=null &&!valorPersona.equals("")&&valorPor!=null&&!valorPor.equals("")){
				PersonaxArtefacto pra = new PersonaxArtefacto();
				Long idPer = new Long(valorPersona);
				Double porc = new Double(valorPor);
				List<PersonaxArtefacto> listaPerArtefacto=null;
				
				
				
				HashMap<String, Object> parametros2 = new HashMap<String, Object>();
				ArrayList<String> propiedades2=new ArrayList<String>();
				ArrayList<Object> valores2 = new ArrayList<Object>();
				ArrayList<String> tiposConsulta2 = new ArrayList<String>();
				
				propiedades2.add("PersonaArtefactoPk.idArtefactoNaval");
				valores2.add(new Long(idArtefactoNaval));
				tiposConsulta2.add(Consulta.IGUAL);
				
				propiedades2.add("PersonaArtefactoPk.idPersona");
				valores2.add(new Long(idPer));
				tiposConsulta2.add(Consulta.IGUAL);
				
				parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades2));
				parametros2.put("valores", Listas.pasarListaArregloObjeto(valores2));
				parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta2));
				parametros2.put("ordenarPor", "PersonaArtefactoPk.idPersona asc");
				
				listaPerArtefacto=servicioGenerico.cargarTodosV2(PersonaxArtefacto.class, parametros2, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
				if(!listaPerArtefacto.isEmpty()){
					pra = listaPerArtefacto.get(0);
					pra.setPorcentaje(porc);
					pra.setUsuario(ul.getCodUsuario());
					servicioGenerico.modificar(pra);
					Audit_PersonaxArtefacto audit_pra=new Audit_PersonaxArtefacto();
					audit_pra.setIdArtefactoNaval(artefacto.getIdArtefactoNaval());
					audit_pra.setIdPersona(idPer);
					audit_pra.setPorcentaje(porc);
					audit_pra.setFechaInicio(new Date());
					audit_pra.setUsuarioAudit(ul.getCodUsuario());
					audit_pra.setFechaAudit(new Date());
					audit_pra.setAccionAudit("UPDATE de personas por artefacto");
					
					servicioGenerico.agregar(audit_pra);
				}else{
					PersonaArtefactoPk perArtefactoPk =  new PersonaArtefactoPk();
					Audit_PersonaxArtefacto audit_pra=new Audit_PersonaxArtefacto();
					pra.setPersonaArtefactoPk(perArtefactoPk);
					pra.getPersonaArtefactoPk().setIdArtefactoNaval(artefacto.getIdArtefactoNaval());
					pra.getPersonaArtefactoPk().setIdPersona(idPer);
					pra.setPorcentaje(porc);
					pra.setFechaInicio(new Date());
					pra.setUsuario(ul.getCodUsuario());
					servicioGenerico.agregar(pra);
					
					
					
					audit_pra.setIdArtefactoNaval(artefacto.getIdArtefactoNaval());
					audit_pra.setIdPersona(idPer);
					audit_pra.setPorcentaje(porc);
					audit_pra.setFechaInicio(new Date());
					audit_pra.setUsuarioAudit(ul.getCodUsuario());
					audit_pra.setFechaAudit(new Date());
					audit_pra.setAccionAudit("INSERT de personas por artefacto");
					
					servicioGenerico.agregar(audit_pra);
				}
				
			}
		}
		
		
		
		
		JSONObject o = new JSONObject();
		o.put("idArtefactoNaval",artefacto.getIdArtefactoNaval() );
		if(finalRes!=null&&finalRes.equals("1")){
			o.put("exito", 1);
			o.put("mensaje", "Se Guardaron los Datos Exitosamente");
		}
		enviarJsonNavegador(o);
		}catch(Exception e){
			e.printStackTrace();
			if(e.getCause()!=null)
				enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
			else
				enviarMensajeStatic("error~"+e.toString(), getServletResponse());
		}
	}
	

	
	public void agregar(){
		 ArtefactoNaval artefacto  = new ArtefactoNaval();
		 Audit_Artefacto_Naval audit_artefacto=new Audit_Artefacto_Naval();
		 
		// String idArtefactoNaval =getServletRequest().getParameter("idArtefactoNav"); 
		 String nombreArtefacto=getServletRequest().getParameter("nombreArtefactoNaval");
		 String idAgrupacion=getServletRequest().getParameter("idAgrupacion");
		 String numeroOficial=getServletRequest().getParameter("numeroOficialArtefacto");
		 String distintivoLlamada=getServletRequest().getParameter("distintivoLlamada");
		 String idTipoArtefacto=getServletRequest().getParameter("idTipoArtefactoNaval");
		 String desplazamiento=getServletRequest().getParameter("desplazamiento");
		 String idPuerto=getServletRequest().getParameter("idPuerto");
		 String ubicacionFisica=getServletRequest().getParameter("ubicacionFisica");
		 String idMaterial=getServletRequest().getParameter("idMaterial");
		 String color=getServletRequest().getParameter("color");
		 String construidoEn=getServletRequest().getParameter("construidoEn");
		 String constructor=getServletRequest().getParameter("constructor");
		 String observaciones=getServletRequest().getParameter("observaciones");
		 String resolucionDe=getServletRequest().getParameter("resolucionDe");
		 String fechaResolucionDe=getServletRequest().getParameter("fechaResolucionDe");
		 String fechaNotificacion=getServletRequest().getParameter("fechaNotificacion");
		 String fechaEmision=getServletRequest().getParameter("fechaEmision");
		 String fechaExpiracion=getServletRequest().getParameter("fechaExpiracion");
		 String contador=getServletRequest().getParameter("contador");
		// String estado=getServletRequest().getParameter("estado");
			TipoArtefacto ta = new TipoArtefacto();
			if(idTipoArtefacto!=null&&!idTipoArtefacto.equals("")) ta.setIdTipoArtefacto(new Long(idTipoArtefacto));
			else ta = null;
			
			Agrupacion agr=new Agrupacion();
			if(idAgrupacion!=null&&!idAgrupacion.equals("")) agr.setIdAgrupacion(new Long(idAgrupacion));
			else agr = null;
			
			MaterialCasco mc = new MaterialCasco();
			if(idMaterial!=null&&!idMaterial.equals("")) mc.setIdMaterial(new Long(idMaterial));
			else mc =null;
			
			Puerto pto = new Puerto();
			if(idPuerto!=null&&!idPuerto.equals("")) pto.setIdPuerto(new Long(idPuerto));
			else pto=null;
			
			Long cnt = new Long(0);
			if(contador!=null&&!contador.equals("")) cnt = new Long(contador);
			
			try{
			
//		Long numCil = new Long(0);
//		if(numeroCilindros!=null&&!numeroCilindros.equals("")) numCil = new Long(numeroCilindros);
//		Long numCil = new Long(0);
//		if(numeroCilindros!=null&&!numeroCilindros.equals("")) numCil = new Long(numeroCilindros);
		
				artefacto.setColor(color);
				artefacto.setConstructor(constructor);
				artefacto.setConstruidoEn(construidoEn);
				artefacto.setDesplazamiento(desplazamiento);
				artefacto.setDistintivoLlamada(distintivoLlamada);
//				artefacto.setFechaEmision(fechaEmi);
//				artefacto.setFechaExpiracion(fechaExpi);
//				artefacto.setFechaNotificacion(fechaNoti);
//				artefacto.setFechaResolucionDe(fechaRes);
				artefacto.setIdAgrupacion(agr);
				artefacto.setIdMaterial(mc);
				artefacto.setIdPuerto(pto);
				artefacto.setIdTipoArtefacto(ta);
				artefacto.setNombreArtefacto(nombreArtefacto);
				artefacto.setNumeroOficial(numeroOficial);
				artefacto.setObservaciones(observaciones);
				artefacto.setResolucionDe(resolucionDe);
				artefacto.setUbicacionFisica(ubicacionFisica);
				//artefacto.setEstado(estado);
				
				UsuarioLogueado ul = obtenerUsuarioLogueado(getServletRequest());
				artefacto.setUsuario(ul.getCodUsuario());
				servicioGenerico.agregar(artefacto);
				
				audit_artefacto.setIdArtefactoNaval(artefacto.getIdArtefactoNaval());
				audit_artefacto.setNombreArtefacto(nombreArtefacto);
				audit_artefacto.setColor(color);
				audit_artefacto.setConstructor(constructor);
				audit_artefacto.setConstruidoEn(construidoEn);
				audit_artefacto.setDesplazamiento(desplazamiento);
				audit_artefacto.setDistintivoLlamada(distintivoLlamada);
//				artefacto.setFechaEmision(fechaEmi);
//				artefacto.setFechaExpiracion(fechaExpi);
//				artefacto.setFechaNotificacion(fechaNoti);
//				artefacto.setFechaResolucionDe(fechaRes);
				if(agr!=null)audit_artefacto.setIdAgrupacion(agr.getIdAgrupacion()); 
				if(mc!=null)audit_artefacto.setIdMaterial(mc.getIdMaterial());
				if(pto!=null) audit_artefacto.setIdPuerto(pto.getIdPuerto());
				if(ta != null)audit_artefacto.setIdTipoArtefacto(ta.getIdTipoArtefacto());
				
				
				audit_artefacto.setNombreArtefacto(nombreArtefacto);
				audit_artefacto.setNumeroOficial(numeroOficial);
				audit_artefacto.setObservaciones(observaciones);
				audit_artefacto.setResolucionDe(resolucionDe);
				audit_artefacto.setUbicacionFisica(ubicacionFisica);
				//audit_artefacto.setEstado(estado);
				
				//audit_artefacto.setId_Audit_artefacto_naval(artefacto.getIdArtefactoNaval());
				audit_artefacto.setUsuarioAudit(ul.getCodUsuario());
				audit_artefacto.setFechaAudit(new Date());
				audit_artefacto.setAccionAudit("INSERT de Artefacto");
				//audit_artefacto.setUsuarioAudit(ul.getCodUsuario());
				servicioGenerico.agregar(audit_artefacto);
				
			
	
		
		for(int i=0;i<=cnt;i++){
			String valorPersona = getServletRequest().getParameter("hdVal"+i);
			String valorPor = getServletRequest().getParameter("porcentajeVal"+i);
			if(valorPersona!=null &&!valorPersona.equals("")&&valorPor!=null&&!valorPor.equals("")){
				PersonaxArtefacto pra = new PersonaxArtefacto();
				Audit_PersonaxArtefacto audit_pra=new Audit_PersonaxArtefacto();
				
				Long idPer = new Long(valorPersona);
				Double porc = new Double(valorPor);
				PersonaArtefactoPk perArtefactoPk =  new PersonaArtefactoPk();
				pra.setPersonaArtefactoPk(perArtefactoPk);
				pra.getPersonaArtefactoPk().setIdArtefactoNaval(artefacto.getIdArtefactoNaval());
				pra.getPersonaArtefactoPk().setIdPersona(idPer);
				pra.setPorcentaje(porc);
				pra.setFechaInicio(new Date());
				pra.setUsuario(ul.getCodUsuario());
				servicioGenerico.agregar(pra);
				
				
				audit_pra.setIdArtefactoNaval(artefacto.getIdArtefactoNaval());
				audit_pra.setIdPersona(idPer);
				audit_pra.setPorcentaje(porc);
				audit_pra.setFechaInicio(new Date());
				audit_pra.setUsuarioAudit(ul.getCodUsuario());
				audit_pra.setFechaAudit(new Date());
				audit_pra.setAccionAudit("INSERT de personas por artefacto");
				
				servicioGenerico.agregar(audit_pra);
			}
		}
		
	
		
		
		JSONObject o = new JSONObject();
		o.put("idArtefactoNaval",artefacto.getIdArtefactoNaval() );
	//	o.put("exito", 1);
		enviarJsonNavegador(o);
		}catch(Exception e){
				e.printStackTrace();
				if(e.getCause()!=null)
					enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
				else
					enviarMensajeStatic("error~"+e.toString(), getServletResponse());
				
			}
		}
}
	

